Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Sunday, July 17, 2016

Fluentd, Elasticsearch, Kibana тохиргоо

Өмнөх пост дээр fleuntd - ийн талаар товчхон бичсэн бөгөөд одоо fluentd, elasticsearch, kibana 3 ийг хослуулан хэрэглэх талаар товчхон бичнэ.

Орчин

Windows 10
Vagrant
Centos 7
Fluentd
Java version 1.8.0_91
ELastic searh
Kibana

1. Fluentd гэж юу вэ
  Өмнөх нийтлэлийг харна уу. Эндээс

2. Elasticsearch гэж юу вэ
  Одоо үед хэрэглэгчийн мэдээллийг цуглуулан анализ хийж түүн дээрээ тулгуурлан чухал шийдвэрүүдийг гаргах нь энгийн л үзэгдэл болсон байна. Өмнө нь өгөгдөл цуглуулах янз бүрийн аргыг хэрэглэж ирсэн ч санасан үр дүнд хүрдэггүй байсан гэх. Харин Elasticsearch нь сүүлийн үед хэрэглэгчийн сонирхолд ойрхон мэдээллийг олж авч анализ хийх нь үр дүнтэй болсон бөгөөд тухайн мэдээллийг тэр чигээр нь бүгдийг биш шинж чанар болон хэрэглэхэд хялбар байдлаар авч хадгалан, түүнээсээ уян хатан хайлт(full search бас) хийх гэх мэт боломжыг олгодогоороо сүүлийн үед анхаарал татаж байгаа. Lucene гэх engine ийг ашигладаг бөгөөд Apache лиценз тэйгээр Solr болон Elastic компани хөгжүүлж байна. Elasticseach ийг facebook болон Github ашигладаг гэх нь бий.

  Elasticsearch ийг онцлог
    Full text хайлт хийдэг бөгөөд маш их(big data гэх мэт) өгөгдлөөс хэрэглэгчийн хүссэн мэдээллийг хайхад зориулагдсан бүтэцтэй. RDBMS нь яг тохирсон үгээр хайдаг бол full search тухайн хайлтанд таарах болон түүнтэй холбоотой өгөгдлүүдийг буцаадагаараа ялгаатай. Өөрөөр хэлбэл хялбараар хүссэн өгөгдлөө хайх боломжыг бүрдүүлж өгдөгөөрөө full search engine - ийн онцлогтой. Мөн доорх онцлогууд бас бий.

    - scalable
    - schema less
    - multi-tenant
    - REST+JSON
    - Өгөгдөл хялбар харах(Kibana)
    - Hadoop холболт
    - Plugin
    - Tunning

3. Kibana гэж юу вэ
  Kibana нь Elastic компаниас гаргасан багаж бөгөөд Elasticsearch тай хамтарч ажиллах чадвартай realtime өгөгдөл хянах зориулалттай багаж юм. Elasticsearch болон Kibana-г хослуулан их хэмжээний өгөгдөлд(big data) анализ хийхэд өргөн хэрэглэлэг.

Дээр хялбархан Elasticsearch Kibana гэж юу болох талаар бичлээ. Одоо суулгаж ажиллуулах талаар бичье.

Ерөнхий системийн бүтэц доорх хэлбэртэй байна.

1. Fluentd суулгах
  Өмнөх нийтлэлийг харна уу. Эндээс

  <source>
    @type forward
    port 24224
  </source>

  <match httpd_access>
    type elasticsearch
    host localhost
    port 9200

    logstash_format true
    logstash_prefix httpd_access
    logstash_dateformat %Y%m

    buffer_type memory
    buffer_chunk_limit 10m
    buffer_queue_limit 10
    flush_interval 1s
    retry_limit 16
    retry_wait 1s
  </match>

2. Elasticsearch суулгах

  •   sudo yum -y install gcc libcurl-devel
  •   sudo td-agent-gem install fluent-plugin-elasticsearch
  •   yum -y install java-1.8.0-openjdk-devel.x86_64
  •   vi /etc/yum.repos.d/elasticsearch.repo

            [elasticsearch-2.x]
            name=Elasticsearch
            baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
            gpgcheck=1
            gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch

  • vi /etc/elasticsearch/elasticsearch.yml
            - #http.port: 9200
            + http.port: 9200

  • sudo systemctl start elasticsearch.service
  • sudo systemctl daemon-reload
  • sudo systemctl enable elasticsearch.service



  •    curl http://localhost:9200 гэж тест хийж үзэхэд доорх json-ийг буцааж байвал ok

            {
                  "name" : "Photon",
                  "cluster_name" : "elasticsearch",
                  "version" : {
                    "number" : "2.3.4",
                    "build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
                    "build_timestamp" : "2016-06-30T11:24:31Z",
                    "build_snapshot" : false,
                    "lucene_version" : "5.5.0"
                  },
                  "tagline" : "You Know, for Search"
             }


  • curl -X PUT localhost:9200/.kibana/_settings -d '{ "index": { "max_result_window": 2147483647 }}'


3. Kibana суулгах


  •   sudo wget https://download.elastic.co/kibana/kibana/kibana-4.2.0-linux-x64.tar.gz
  •   sudo cp /home/vagrant/kibana-4.2.0-linux-x64.tar.gz /opt
  •   sudo tar zxf  kibana-4.2.0-linux-x64.tar.gz
  •   sudo ln -s kibana-4.2.0-linux-x64 kibana
  •   sudo vi /etc/rc.d/init.d/kibana

#!/bin/bash
#
# Kibana Init script for Kibana
#
# chkconfig: 345 99 76
# processname: kibana
#
KIBANA_EXEC="/opt/kibana/bin/kibana"
LOG_FILE="/opt/kibana/kibana.log"
PID_FILE="/opt/kibana/kibana.pid"
RETVAL=0
case "$1" in
"start" )
if [ ! -f ${PID_FILE} ]; then
echo "Starting Kibana..."
$KIBANA_EXEC 1>"$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
echo "Kibana started with pid $!"
else
echo "Kibana is Running."
fi
;;
"stop" )
echo "Stopping Kibana..."
kill `cat ${PID_FILE}`
RETVAL=$?
if test $RETVAL -eq 0 ; then
rm -f ${PID_FILE}
fi
;;
*)
echo "Usage: $0 {start | stop}"
exit 0
;;
esac
exit $RETVAL

  •   chmod +x /etc/init.d/kibana
  •   /etc/init.d/kibana start

Дээрх тохиргоонуудыг хийгээд node2 гэсэн httpd суулгасан машин руу хандахад тухайн log - ийн өгөгдлийг node1 гэсэн машин руу илгээх юм. Доорх хаягаар орж харвал  Kibana дээр log - ийн node2 машинаас илгээсэн өгөгдлийг харж болж байна.
  http://192.168.33.55:5601/




Saturday, June 18, 2016

Fluentd гэж юу вэ, тохиргоо

Fluentd гэж юу вэ

  http://fluentd.org/

  Fluentd нь сервэр хоорондын өгөгдөл дамжуулах нээлттэй эхийн программ

Юу хийх боломжтой вэ

  Өгөгдөл цуглуулах

Ерөнхий ажиллах зарчим

  Fluentd нь өгөгдөл удирдахад хэрэглэгддэг бөгөөд deamon маягаар ажиллана. Ихэнхидээ лог хянахад хэрэглэж байгаа боловч ганц лог биш өгөгдөл дамжуулах өөр зүйлд ч ашиглаж боломжтой. Оролт, хадгалалт, гаралт гэсэн зарчимаар ажилладаг бөгөөд тохируулгыг олон оролт гаралтыг хянахад зориулж тохируулахад  болно.

Онцлог

  Нээлттэй эх
  Нэмэт плагин
    Нэмэлт плагины сонголт их. Fluentd ruby программчлалын хэл дээр бичигдсэн тул нэмэлтүүд нь гол төлөв gem хэлбэрээр байх нь элбэг.
  Хурд, гүйцэтгэл
    Суулгэсэн нэмэлтээс хамаараад янз бүр байна.
  Өргөжүүлэх бололмж
    Хэрэв хүсвэл өөрөө нэмэлт бичиж болно.
  Comminity
    Япон хүн хийсэн болохоор Япончуудын community нтр л байдаг юм шиг байгаа юм

Орчин

Windows10
Vagrant
Centos7


2машины хооронд өгөгдөл дамжуулах учир vagrant дээр 2 машин ачаалласан байгаа.



Fluentd ийг суулгаж ажиллуулах

1. sudo curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

  Хэрэв gem - ээр суулгах бол

  gem install fluentd --no-ri --no-rdoc

2. Сервэр болон node гэсэн 2 машин ачааллаж байгаа. Vagrant учир filter ийг зогсоочихлоо
  sudo systemctl stop iptables
  sudo systemctl stop firewalld

3. Турших зорилгоор вэб сервэр суулгав

  sudo yum -y install httpd




4. Өгөгдөл илгээх машин(forwarder)ы тохиргоо
  <source>
    type tail
    path /var/log/httpd/access_log
    pos_file /var/log/td-agent/httpd.pos
    tag httpd_access #tag нэмж өгөх
    format none
  </source>

  <match httpd_access>
    type forward          
    send_timeout 60s      
    heartbeat_type udp    
    heartbeat_interval 1s 
    <server>
      host 192.168.33.55   # илгээх машины хаяг
      port 24224          # илгээх машины порт
    </server>
  </match>

5. sudo systemctl restart td-agent

6. Өгөгдөл хүээн авах машин(aggregator)ы тохиргоо
  <source>
    @type forward
    port 24224
  </source>

  <match httpd_access>
    @type file
    path /var/log/td-agent/access_log
  </match>

7. sudo systemctl restart td-agent




Энэ удаад хамгийн энгийн туршилтыг хийж үзүүлэв.
Дараа улам дэлгэрүүлнэ.

Эх сурвалж

  http://fluentd.org/
  http://hivecolor.com/id/37
  http://tagomoris.hatenablog.com/entry/2013/12/03/150656

Friday, November 6, 2015

Mysql socket алдаа

Доорх алдааг засах

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

Эхлээд socket файл байгаа эсэхийг шалгана
$ ls -al /var/lib/mysql/

Байхгүй бол үүсгэнэ
$ sudo touch /var/lib/mysql/mysql.sock

Эрхийг өөрчилнө
$ sudo chown mysql:mysql /var/lib/mysql

Mysql ийг дахин ачаална
$ sudo /etc/init.d/mysqld restart

/etc/my.cnf ийг өөрчилөөгүй бол дээрхээр болох байх