지금 fluentd를 처음 보았다 Apache + Elasticsearch + Kibana 뭐가 맛있어? , 그 5

이제 fluentd 처음 보는 5 (완결편)



우여곡절 했습니다만, 드디어 「 벌써 몇 번 달인거야? 」정도 같은 레벨로 인스톨 할 수 있었습니다. 더 이상 설치한 버전이 버그 있던 덕분? 에서 공부 다양했습니다. 이것으로 드디어 스타트 라인에 세웠습니다 w. 그리고, 본제 「Apache + fluentd + Elasticsearch + Kibana」라고 하는 것으로(정말로 몇번 달여?) 완결편입니다.

fluentd + Elasticsearch + Kibana로 데이터 집계 서버 만들기



File descriptor, Kernel 파라미터 설정



vm 을 2 개 준비합니다. 이것은 단순히 서비스 측과 해석 측과 인스턴스를 분리해 명확하게 하고 싶은 만큼(취미적인 문제)이므로 적절히 읽어 봐 주어도 상당합니다. 하지만 fluentd 는 파일 디스크립터를 상당히 사용하는 것 같기 때문에 디폴트 1024 보다 큰 값으로 해 둡니다.
$ sudo vi /etc/security/limits.conf
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

$ ulimit -n (システムを再起動)
$ sudo vi /etc/sysctl.conf
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240    65535

$ sysctl -w

fluentd 설치



다운 그레이드 한 td-agent 0.10.45를 넣는 이유는 최신 버전이 여전히 그렇기 때문에.
$ sudo su
# curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh
$ sudo yum remove td-agent-1.1.20-0.x86_64
$ sudo yum install td-agent-1.1.19-0.x86_64
$ td-agent --version
td-agent 0.10.45

그리고, yum 의 fastestmirror 를 도입하고 있거나 update 하면 절각 다운그레이드 한 것이 최신화되어 버리므로 /etc/yum.conf 에 이하를 추가한다.
exclude=td-*

수신측(컬렉터측) 설정



elasticsearch 플러그인 도입



수신측(컬렉터측)에 fluentd 의 elasticsearch 플러그인 를 도입, gem으로 넣을 때 libcurl-devel, gcc 가 필수입니다.
# yum install libcurl-devel gcc
# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-elasticsearch

Elasticsearch 설치



외부 리포지토리 추가(EPEL)를 수행합니다. 또 Elasticsearch 에는 java 가 필요하므로 그것도 인스톨 합니다 (개인적으로는, java 넣는 것 굉장 싫지만 w). 그리고는 형태소 해석기의 Kuromoji 플러그인도 김에 설치해도 좋을지도 모릅니다.
# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch
# vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-1.1]
name=Elasticsearch repository for 1.1.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.1/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

# yum install elasticsearch java-1.7.0-openjdk
# chkconfig --add elasticsearch
# chkconfig elasticsearch on
# service elasticsearch start

그렇다면 동작을 확인합니다.
$ curl -X GET http://localhost:9200/
{
  "status" : 200,
  "name" : "Wilbur Day",
  "version" : {
    "number" : "1.1.2",
    "build_hash" : "e511f7b28b77c4d99175905fac65bffbf4c80cf7",
    "build_timestamp" : "2014-05-22T12:27:39Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

Apache 설치



여기는 평소와 같이 한다. ServerName을 떠나면 경고가 아닐 수 있습니다. kibana를 시작하는 것만으로 nginx에서도 ok이므로 여기도 취미의 문제입니다.
# yum install httpd
# /etc/init.d/httpd start
# chkconfig httpd on

kibana 설치



3.1.0 최신판을 설치(2014/7/4 시점).
# curl -sL https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz | sudo tar zxf - -C /var/www/html
# mv /var/www/html/kibana-3.1.0 /var/www/html/kibana
# /etc/init.d/httpd restart

액세스



http://localhost/kibana로 이동하여 kinaba의 초기 화면이 표시되는지 확인하십시오.


fluentd 정의



전송된 내용을 확인하는 의미로 type stdout를 지정합니다. 운용 시작하기 전에는 /var/log/td-agent/td-agent.log 에 출력된 내용을 확인하고 미세 조정하면서 이해 및 정의하는 것이 좋습니다.
<source>
  type forward
  port 24224
</source>


<match apache.**>
  type copy

  <store>
    type stdout
  </store>

  <store>
    type elasticsearch
    host elasticsearch IPアドレス
    port 9200
    type_name access_log_2
    logstash_format true
    logstash_prefix apache_access
    logstash_dateformat %Y%m
  </store>

 </match>

송신측(에이전트측)



fluentd 정의



fluentd apache2 플러그인을 사용하여 디코딩 한 내용을 elasticsearch가 설치된 서버로 전송합니다. 여기서도 type stdout를 지정합니다. 운용 시작하기 전에는 /var/log/td-agent/td-agent.log를 보면서 설정하는 것이 가장 좋습니다.
<source>
  type tail
  path /var/log/httpd/access_log
  tag apache.combined
  pos_file /var/log/td-agent/httpd-access.log.pos
  format apache2
</source>

<match apache.**>
  type copy

  <store>
    type stdout
  </store>

  <store>
    type forward
    buffer_chunk_limit 256m
    buffer_queue_limit 128
    flush_interval 5s
    <server>
      host elasticsearch IPアドレス
      port 24224
    </server>
  </store>
</match>

kibana



fluentd 설정, Elasticsearch에서 데이터가 모이면 마침내 데이터를 시각화할 준비가 됩니다. 덧붙여서 데이터가 축적되어 있지 않으면 kibana로 해석할 수 없다고 할까 재미없기 때문에 적당하게, wget라든지 curl로 서비스측을 두드려 두는 것,

kibana 사용법



반드시 환경 설정보다 어려울지도. 저도 공부중입니다.


fluentd + Elasticsearch + Kibana로 시작하는 로그 분석 (설정편)

다음 번



fluentd 를 다단 구성으로 하면서 중복 구성하거나 놀고, 원래 공부해 볼 생각

fluentd로 시작하는 로그 관리【포워드 설정 정리】

좋은 웹페이지 즐겨찾기