IIS NCSA Logging

-       Version : IIS

 

NCSA 로그 파일 형식은 로그파일의 가장 기본적인 형식이다. NCSA 로그 파일 형식은 고정된 ASCII 형식이며 각 로그 항목은 고유 파일 요청을 나타낸다. 이 로그파일을 분석하면 아래와 같은 정보를 얻을 수 있다.

·       Hits (고유한 파일 요청 수)

·       Page views (고유한 페이지 요청 수)  

·       Visits (지정된 기간 동안 사용자 세션 수)

·       기타 기본적인 액세스 정보

NCSA 로그 파일 형식은 아래와 같은 항목을 포함하고 있으며 로그 항목 개수가 적기 때문에 로깅에 필요한 공간이 절약된다. 아래 샘플은 NCSA 형식으로 기록된 로그이다.

172.21.13.45 - Microsoft\JohnDoe [07/Apr/2004:17:39:04 -0800]

"GET /scripts/iisadmin/ism.dll?http/serv HTTP/1.0" 200 3401

 

·       호스트 : 172.21.13.45

·       ID :

·       사용자 인증 : Microsoft\JohnDoe

·       타임 스탬프 : [07/Apr/2004:17:39:04 -0800]

·       HTTP 요청 유형 : "GET /scripts/iisadmin/ism.dll?http/serv HTTP/1.0"

·       상태 코드 : 200

o   1XX : 계속/프로토콜 변경

o   2XX : 성공

o   3XX : 리디렉션

o   4XX : 클라이언트 오류/실패

o   5XX : 서버 오류

·       전송 크기 : 3401 (단위 : byte)

 

 

 

[참고자료]

https://docs.microsoft.com/en-us/windows/desktop/http/ncsa-logging

 

 

2018-10-18 / Sungwook Kang / http://sqlmvp.kr

 

Windows, IIS, 웹서버, IIS log, IIS NCSA logging, IIS 로그 모니터링


'Windows , IIS' 카테고리의 다른 글

IIS W3C Logging  (0) 2019.03.25
IIS Logging  (0) 2019.03.25
IIS 액세스 로그 종류  (0) 2019.03.24
IIS 프로세스 사용량 모니터링  (0) 2019.03.24
IIS 메모리, 캐싱 가상 메모리 사용량 확인  (0) 2019.03.24

IIS 액세스 로그 종류

-       Version : IIS

 

액세스 로그는 HTTP, FTP, SMTP 서버에서 로깅을 사용한다고 설정할 때 생성된다. 웹사이트에 요청이 있을때 마다 가저오려는 모든 성공, 실패 시도가 액세스 로그에 기록된다. 액세스 로그를 분석하면 아래와 같은 정보를 확인할 수 있다.

·       하루 혹은 한주의 가장 바쁜 시간

·       사이트에 방문하는 사용자의 사용 브라우저 및 플랫폼

·       리소스 선호도

·       어떤 사이트를 통해서 들어오는지

·       광고에 효과적인 정보 수집

·       검색 엔진 사용량 및 키워드에 대한 정보

·       사이트에 머문 시간

 

IIS에서는 아래와 같은 다양한 형식의 액세스 로그를 구성할 수 있다.

·       NCSA(National Center for Supercomputer Applications) 공통 로그 파일 형식 (웹 서버와 SMTP 서버만) : 기본적인 추적 및 보고서 기능이 필요할 때 NCSA 공통 로그 파일 형식을 사용한다. 이 형식을 사용하면 수집되는 로그 항목이 적기 때문에 저장에 필요한 공간이 크지 않다.

·       Microsoft IIS 로그 파일 형식 : 로그에 더 많은 정보를 저장하려고 할때 IIS 로그 파일 형식을 사용할 수 있다. 이 형식을 사용하면 꼭 필요한 로그 항목만 저장되기 때문에 로깅에 필요한 저장 공간이 절약된다.

·       W3C 확장 로그 파일 형식 : 추적되는 정보를 커스터마이징해야할 때 W3C 확장 로그파일 형식을 사용한다. 이 형식을 사용하면 로그 항목이 많아지기 때문에 저장소 공간이 많이 필요하다. 너무 많은 항목은 서버에 영향을 줄 수 도 있다.

·       ODBC 로깅 : 직접적으로 ODBC 호환 데이터베이스에 액세스 정보를 기록하려고 할때 사용. 수집되는 항목의 개수는 많지 않지만 표준 로그 파일보다 쉽게 데이터를 읽을 수 있다. ODBC 로깅은 로컬 데이터베이스 인스턴스에 직접 로깅하기 때문에 리소스를 많이 사용한다.

·       중앙 이진 로깅 : 서버에 여러 웹사이트가 운용되고 있을 경우 하나의 로그 파일에 로깅하려고 할때 사용. 이 로깅을 사용하면 로그 파일은 고정된 길이로 저장되며 .ibl 확장자를 사용하는 IBL(Internet Binary Log) 형식으로 기록되는 인덱스 레코드로 저장된다.  

 

 

2018-10-17 / Sungwook Kang / http://sqlmvp.kr

 

Windows, IIS, 웹서버, IIS 성능 카운터, IIS Performance counter, IIS 모니터링


'Windows , IIS' 카테고리의 다른 글

IIS Logging  (0) 2019.03.25
IIS NCSA Logging  (0) 2019.03.25
IIS 프로세스 사용량 모니터링  (0) 2019.03.24
IIS 메모리, 캐싱 가상 메모리 사용량 확인  (0) 2019.03.24
IIS 성능 카운터  (0) 2019.03.24

IIS 프로세스 사용량 모니터링

-       Version : IIS

 

프로세스 사용량 관련 성능 카운터에 대해서 살펴 본다. CPU는 서버의 정보를 실제로 처리하는 역할을 한다. 서버의 성능을 검사할 때 메모리 병목현상을 제거한 후에는 CPU를 의심해 보아야 한다. 서버의 프로세서에 병목이 발생한다면 더 빠른 클럭이나 더 많은 수의 코어를 가진 CPU로 업그레이드를 고민해야 한다.

[쓰레드 큐]

·       System\Processor Queue Length : 실행 되기 위해 기다리는 쓰레드의 수를 표시한다. 이러한 쓰레드는 시스템의 모든 프로세스에서 공유하는 영역에 대기된다. 이 카운터가 Core X 2 배수이상으로 지속되면 프로세서 업그레이드를 검토 해야한다.

 

[CPU 사용량]

·       Processor\%Processor Time : 프로세서가 비유휴 쓰레드를 실행하는데 소비한 시간의 퍼센트이며 서버의 모든 프로세서 인스턴스마다 별도로 추적해야 한다. 네트워크 인터페이스 및 디스크 I/O 처리량에 비해 %Processor Time 값이 높다면 프로세서 업그레이드를 검토해야 한다.

 

[ASP 성능]

·       Active Server Pages\Request Wait Time : 가장 최근의 요청이 큐에서 기다리는 밀리세컨드 수

·       Active Server Pages\Requests Queued : 처리되기 위해 기다리는 요청 수

·       Active Server Pages\Requests Rejected : 실행되지 않는 전체 요청 수. 요청이 실행되지 얂는 이유는 처리할 리소스가 없기 때문이다.

·       Active Server Pages\Requests/sec : 초당 실행된 요청 수

 

 

 

 

 

2018-10-15 / Sungwook Kang / http://sqlmvp.kr

 

Windows, IIS, 웹서버, IIS 성능 카운터, IIS Performance counter, IIS 모니터링


'Windows , IIS' 카테고리의 다른 글

IIS NCSA Logging  (0) 2019.03.25
IIS 액세스 로그 종류  (0) 2019.03.24
IIS 메모리, 캐싱 가상 메모리 사용량 확인  (0) 2019.03.24
IIS 성능 카운터  (0) 2019.03.24
IIS 액세스 로그 설정  (0) 2019.03.24

IIS 메모리, 캐싱 가상 메모리 사용량 확인

-       Version : IIS

 

IIS 메모리 사용량 관련 성능 카운터에 대해서 살펴 본다.

 

[실제 및 가상 메모리 사용량]

·       Memory\Available Kbytes : 컴퓨터에서 실행되는 프로세스에 할당하거나 시스템에서 사용할 수 있는 실제 메모리 크기 (킬로바이트)

·       Memory\Committed Bytes : 커밋된 가상 메모리의 크기 (바이트)

서버에서 사용할 수 있는 메모리가 거의 없으면 시스템에 메모리를 추가해야한다. 일반적으로 서버의 전체 실제 메모리의 5% 정도가 사용할 수 있는 메모리로 남아 있어야 한다. 시스템 전체의 실제 메모리에 대한 커밋된 바이트의 비율이 높다면 서버에 메모리를 추가해야한다. 일반적으로 커밋된 바이트 값이 전체 메모리의 75% 정도가 되어야 한다.

 

[메모리 캐싱]

·       Memory\Cache Bytes : 파일 시스템 캐시의 전체 크기를 바이트로 표시

·       Internet information Services Global\Current File Cache Memory Usage : IIS 파일 캐시에서 사용하는 현재 메모리 표시

·       Inter information Services Global\File Cache Hits% : 전체 캐시 요청 대비 캐시 히트율 (히트율이 높을수록 좋음)

·       Inter information Services Global\File Cache Flushes : 서버를 시작한 이후의 파일 캐시 플러시 수. 플러시가 너무 빨리 발생하면 ObjectCacheTTL 값을 증가시켜야 한다. 반대로 플러시가 너무 느리면 ObjectCacheTTL 값을 감소 시켜야 한다.

 

[메모리 페이징]

·       Memory\Pool Paged Bytes : 페이지 풀의 바이트

·       Memory\Pool Nonpaged Bytes :  페이지 되지 않은 풀의 바이트

페이지된 풀은 사용되지 않을 때 디스크에 쓰여질 수 있는 객체에 대한 시스템 메모리 영역이다. 페이지된 풀의 크기가 일반적으로 시스템의 실제 메모리의 전체 양과 비슷하다면 시스틈에 메모리를 추가해야 한다. 페이지되지 않은 풀의 크기가 서버에 할당된 가상 메모리의 전체 양과 비슷하다면 가상 메모리 크기를 늘려야 한다.

 

[메모리 페이지 부재]

·       Memory\Page Faults/sec : 초당 페이지 부재의 평균 수

·       Memory\Pages Input/sec : 하드 페이지 폴트를 해결하기 위해 디스크에서 페이지를 읽은 비율

·       Memory\Page Reads/sec : 하드 페이지 부재를 해결하기 위해 디스크를 읽은 비율

페이지 부재는 프로세스가 메모리의 페이지를 요청했을 경우에 시스템에서 요청된 위치를 찾을 수 없을 때 발생한다. 요청된 페이지가 메모리의 어딘가에 있다면 이 부재를 소프트(soft) 페이지 부재라 한다. 그리고 요청된 페이지를 디스크에서 가져와야 한다면 하드(hard) 페이지 부재라고 한다. 대부분의 프로세서는 많은 수의 소프트 페이지 부재를 처리할 수 있지만 하드 페이지 부재인 경우 성능이 느릴수 있다. 만약 하드 페이지 부재가 많이 발생한다면 메모리 양을 늘리거나 캐시 크기를 줄여야 한다.

IIS에서 사용하는 메모리는 MemCacheSizeMaxCachedFileSize 레지스트리 설정으로 제어할 수 있다. 그러나 이러한 항목이 수동으로 추가되지 않는다면 값은 레지스트리의 기본값을 사용한다.

 

2018-10-10 / Sungwook Kang / http://sqlmvp.kr

 

Windows, IIS, 웹서버, IIS 성능 카운터, IIS Performance counter, IIS 모니터링


'Windows , IIS' 카테고리의 다른 글

IIS 액세스 로그 종류  (0) 2019.03.24
IIS 프로세스 사용량 모니터링  (0) 2019.03.24
IIS 성능 카운터  (0) 2019.03.24
IIS 액세스 로그 설정  (0) 2019.03.24
브라우저 요청 리디렉트 하기  (0) 2016.03.11

IIS 성능 카운터

-       Version : IIS

 

IIS 성능을 모니터링 하기 위한 방법으로 성능 도구 중의 하나인 성능 카운터(Performance Counter)가 있다. IIS가 설치되면 수 백개의 성능 카운터가 추가되며 카운터는 객체에 따라 그룹으로 구분되어 있다. 아래 목록은 IIS 모니터링에 중요한 성능 카운터 목록이다.

·       ASP.NET : ASP.NET 응용프로그램, 응용프로그램 요청, 작업자 프로세스의 일반적인 추적 객체 카운터

·       ASP.NET Applications : ASP.NET 응용프로그램 큐 및 기타 지정된 ASP.NET 응용 프로그램 카운터를 추적하는 객체 카운터

·       Active Server Pages : 서버에서 실행되는 ASP 스크립트 및 응용 프로그램에 대한 객체 카운터

·       FTP Service : FTP 서비스의 객체 카운터

·       Indexing Service : 인덱싱 프로세스, 단어 목록, 쿼리와 관련된 인덱싱 서비스의 객체 카운터

·       Indexing Service Filter : 필터와 관련된 컨텐츠 필터 및 인덱싱 속도와 관련된 추가 성능을 제공하는 객체 카운터

·       Internet Information Services Global : 서버에서 실행되는 모든 인터넷 서비스(WWW, FTP, SMTP, NNTP )에 대한 객체 카운터

·       NNTP Commands : 사용자가 서버에서 실행하고 있는 NNTP 명령어와 관련된 객체 카운터

·       NNTP Server : 초당 게시물 전송, 수신, 게시 수와 같은 전체 NNTP 성능을 추적하는 객체 카운터

·       SMTP NTFS Store Driver : 메시지 및 메시지 스트림의 전채 개수를 추적하는 객체 카운터

·       SMTP Server : 초당 수신 및 송신 메시지 수와 같은 전체 SMTP 성능을 추적하는 객체 카운터

·       Web Service : World Wide Web Publishing Service의 객체 카운터

·       Web Service Cache : 메타데이터, 파일, 메모리, URI(Uniform Resource Identifiers)를 포함하는 웹 서비스에서 사용되는 캐시의 자세한 정보를 제공하는 카운터

 

모니터링 목적

Counter Name

Object

응용 프로그램 상태

Application Restarts

ASP.NET

 

Applications Running

ASP.NET

ASP 세션

Session Duration

Active Server Pages

 

Sessions Current

Active Server Pages

 

Sessions Timed Out

Active Server Pages, ASP.NET Applications

 

Sessions Total

Active Server Pages, ASP.NET Applications

ASP 트랜잭션

Transactions Aborted

Active Server Pages, ASP.NET Applications

 

Transactions Committed

Active Server Pages, ASP.NET Applications

 

Transactions Pending

Active Server Pages, ASP.NET Applications

 

Transactions Total

Active Server Pages, ASP.NET Applications

 

Transactions/Sec

Active Server Pages, ASP.NET Applications

대역폭 사용량

Current Blocked Async I/O Requests

Internet Information Services Global, Web Service

 

Measured Async I/O Bandwidth usage

Internet Information Services Global, Web Service

 

Total Allowed Async I/O Requests

Internet Information Services Global, Web Service

 

Total Blocked Async I/O Requests

Internet Information Services Global, Web Service

 

Total Rejected Async I/O Requests

Internet Information Services Global, Web Service

캐싱 및 메모리

File Cache Flushes, URI Cache Flushes

Internet Information Services Global

 

File Cache Hits, URI Cache Hits

Internet Information Services Global

 

File Cache Hits %, URI Cache Hits %

Internet Information Services Global

 

File Cache Misses, URI Cache Misses

Internet Information Services Global

 

Maximum File Cache Memory Usage

Internet Information Services Global

 

Script Engines Cached

Active Server Pages

 

Template Cache Hit Rate

Active Server Pages

 

Template Notifications

Active Server Pages

 

Templates Cached

Active Server Pages

연결

Connection Attempts/Sec

Web Service

 

Current Anonymous Users

Web Service, FTP Service

 

Current Connections

Web Service, FTP Service

 

Current File Cache Memory Usage

Internet Information Services Global

 

Maximum Connections

Web Service, FTP Service

 

Current Files Cached

Internet Information Services Global

 

Maximum Anonymous Users

Web Service, FTP Service

 

Maximum NonAnonymous Users

Web Service, FTP Service

 

Total Anonymous Users

Web Service, FTP Service

 

Total Connection Attempts (all Instances)

Web Service, FTP Service

 

Total Logon Attempts

Web Service, FTP Service

 

Total NonAnonymous Users

Web Service, FTP Service

오류

Errors During Script Runtime

Active Server Pages

 

Errors From ASP Preprocessor

Active Server Pages

 

Errors From Script Compilers

Active Server Pages

 

Errors/Sec

Active Server Pages

 

Not Found Errors/Sec

Web Service

 

Requests Not Authorized

Active Server Pages, ASP.NET Applications

 

Requests Not Found

Active Server Pages, ASP.NET Applications

 

Requests Rejected

Active Server Pages, ASP.NET

 

Requests Timed Out

Active Server Pages, ASP.NET Applications

 

Service Uptime

Web Service

 

Total Not Found Errors

Web Service

인덱싱

Running Queries

Indexing Service

 

Total # of Documents

Indexing Service

 

Total # of Queries

Indexing Service

 

Total Indexing Speed(MB/hr)

Indexing Service Filter

요청

Get Requests/Sec

Web Service

 

Head Requests/Sec

Web Service

 

ISAPI Extension Requests/Sec

Web Service

 

Post Requests/Sec

Web Service

 

Put Requests/Sec

Web Service

 

Request Bytes In Total

Active Server Pages, Asp.NET Applications

 

Request Bytes Out Total

Active Server Pages, Asp.NET Applications

 

Requests Executing

Active Server Pages, Asp.NET Applications

 

Requests Queued

Active Server Pages, ASP.NET

 

Requests Rejected

Active Server Pages, ASP.NET

 

Requests Succeeded

Active Server Pages, ASP.NET Applications

 

Requests Timed Out

Active Server Pages, ASP.NET Applications

 

Requests Total

Active Server Pages, ASP.NET Applications

 

Requests/Sec

Active Server Pages, ASP.NET Applications

처리량

Bytes Received/Sec

Web Service, FTP Service

 

Bytes Sent/Sec

Web Service, FTP Service

 

Bytes Total/Sec

Web Service, FTP Service

 

Files Received/Sec

Web Service

 

Files Sent/Sec

Web Service

 

Files/Sec

Web Service

 

Total Files Received

Web Service, FTP Service

 

Total Files Sent

Web Service, FTP Service

 

Total Files Transferred

Web Service, FTP Service

작업자 프로세스 상태

Worker Process Restarts

ASP.NET

 

Worker Processes Running

ASP.NET

 

 

 

2018-10-09 / Sungwook Kang / http://sqlmvp.kr

 

Windows, IIS, 웹서버, IIS 성능 카운터, IIS Performance counter, IIS 모니터링

IIS 액세스 로그 설정

 

-       Version : IIS

IISIIS액세스 로그와 Windows 이벤트 로그에서 오류를 기록한다. IIS 설정에서 Web, FTP SMTP, NNTP에서 로그를 기록하도록 설정하였으면 액세스 로그가 생성될 것이다. 사용자가 사이트의 파일을 요청할 때마다 액세스 로그에 기록되고 리소스 요청 히스토리가 만들어진다. 항목마다 상태 코드를 포함하기 때문에 요청이 성공했는지 실패했는지 판단할 수 있다.

 

특정 사이트에 대한 액세스 로그를 보려면 아래 순서를 따라 설정한다.

IIS(Internet Information Services) Manager를 실행한다.


 

Web, FTP, SMTP, NNTP 등 액세스 로그를 남기려는 사이트를 클릭하고 Logging 아이콘을 더블클릭한다.


 

로그는 다양한 포맷으로 남길 수 있으며 로그를 남기려는 필드 또한 선택이 가능하다.


 

[로그 파일 디렉터리] 필드는 이 사이트 로그에 대한 최상위 디렉터리를 표시한다. 기본 최상위 디렉터리는 “%SystemDrive%\inetpub\logs\LogFiles”이다.


 

로그는 위에 말한것 처럼 로그 파일에 기록하거나 윈도우 이벤트 로그에 기록 또는 양쪽 모두에 기록 할 수 있다.


 

로그파일은 특정 크기 또는 특정일 간격으로 롤오버하여 기록할 수 있다.


 

로그 폴더에서 기록된 로그를 확인할 수 있다.


 

#Software: Microsoft Internet Information Services 10.0

#Version: 1.0

#Date: 2018-10-08 21:44:24

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken

2018-10-08 21:44:24 ::1 GET / - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 200 0 0 111

2018-10-08 21:44:24 ::1 GET /iisstart.png - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko http://localhost/ 200 0 0 15

2018-10-08 21:44:24 ::1 GET /favicon.ico - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 0

2018-10-08 21:44:29 ::1 GET /favicon.ico - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 0

2018-10-08 21:44:32 ::1 GET / - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 304 0 0 0

 

2018-10-08 / Sungwook Kang / http://sqlmvp.kr

 

Windows, IIS, 웹서버, 윈도우 웹서버, 액세스 로그, IIS Log, Access log, Web log


브라우저 요청 리디렉트 하기

 

  • Version : Windows Server 2012 R2

 

리디렉트는 요청에 대한 경로를 새로운 경로 값으로 지정하는 것으로 브라우저 리디렉션은 웹 사이트 내에서 컨텐츠의 이름을 바꾸거나 삭제하는 경우 기존 사이트에 대한 오류가 발생하지 않도록 다른 사이트로 연결할 때 매우 유용하다.

 

리디렉트 기능으로는 다음과 같다.

  • 다른 디렉터리의 파일 검색
  • 다른 웹 사이트의 파일 검색
  • 다른 컴퓨터의 파일 검색
  • 여러 파일 대신 지정된 파일 검색
  • 요청된 파일에 접근하는 대신, ISAPI 응용 프로그램 실행

 

리디렉션을 하려면 웹서버에 [HTTP 리디렉션]기능이 설치되어있어야 한다.

 

HTTP 리디렉션 설치가 완료되면 IIS 관리자에서 리디렉트하려는 웹사이트를 선택하고 [HTTP 리디렉션]을 클릭한다.

 

[HTTP 리디렉션] 관리에서 연결하려는 주소를 입력하고 적용을 클릭한다.

 

적용이 완료되면 기존 사용하던 주소를 입력하면 자동으로 리디렉션 주소로 이동하여 해당 사이트로 연결되는 것을 확인할 수 있다.

 

웹 사이트에서 리디렉션을 할 때 응용프로그램으로 리디렉션도 가능하다. 이때 리디렉션 변수를 사용하여 응용프로그램에 필요한 파라메터를 포함할 수 있다.

변수

설명

$S

요청된 URL과 매치되는 접미사를 전달한다. 서버는 자동으로 이 접미사를 변환한다. 다른 변수와 함께 $S변수만 사용

$P

쿼리 문자열의 시작을 의미하는 물음표(?)가 생략된 원래의 URL 파라메터를 전달

$Q

완전한 쿼리 문자열을 대상(destination)으로 전달

$V

서버 이름을 제외한 요청된 경로를 전달

$0 ~ S9

표시된 와일드카드 문자와 일치하는 요청된 URL 요소를 전달

!

이 변수를 사용하면 하위 디렉터리나 개별 파일을 리디렉트 할 수 없음

 

 

[참고자료]

http://www.iis.net/configreference/system.webserver/httpredirect

 

2016-03-11 / 강성욱 / http://sqlmvp.kr

 

Windows, IIS, 웹서버, 윈도우 웹서버, 리디렉션, Redirection, HTTP Redirects, IIS 서버

'Windows , IIS' 카테고리의 다른 글

IIS 성능 카운터  (0) 2019.03.24
IIS 액세스 로그 설정  (0) 2019.03.24
Incoming connection 제한과 Time-Out 값 설정  (0) 2016.02.25
IIS (Internet Information Services) 설치  (0) 2016.02.22
  (0) 2015.07.22

+ Recent posts