偏屈エンジニアブログ

老害エンジニアの技術メモ

Nginx/Fluentd→MySQL環境を立てる(解決編)

リベンジマッチ
RHのポータルからのローンチは単なるリンクだけでした。惜しい。
nginxは今回は素直に入れてtd-agent側にパワーを寄せる。
追記:インスタンスサイズはt3.smallが最低ライン

sudo timedatectl set-timezone Asia/Tokyo
sudo yum update
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh
sudo systemctl start td-agent
sudo systemctl enable td-agent
curl -X POST -d 'json= {"json":"message"}' http://localhost:8888/debug.test
tail /var/log/td-agent/td-agent.log
sudo yum install make ruby gcc mysql mysql-devel
sudo td-agent-gem install mysql2
sudo td-agent-gem install fluent-plugin-mysql
sudo vi /etc/td-agent/td-agent.conf

DB側のデータベース名やテーブル名にあわせて記述を修正してください。

<source>
  @type tail
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx.access.log.pos
  tag nginx.access

  format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>\S+) +(?<version>\S+))?" (?<code>[^ ]*) (?<size>[^ ]
*) "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" "(?<xforwarded>[^\"]*)"$/
  time_format %d/%b/%Y:%H:%M:%S %z
</source>

<match nginx.access>
  @type mysql_bulk
  host x.x.x.x
  port 3306
  database database
  username user
  password password

  column_names id,host,user,time,method,path,version,code,size,referer,agent,xforwarded
  key_names id,host,user,${time},method,path,version,code,size,referer,agent,xforwarded
  table nginx_log

  flush_interval 10s
</match>

nginxのログはroot所有になってるので、一旦rootでtd-agentを起動するように修正します。
UserとGroupをtd-agent→rootに変更すればOKです。
daemonのリロードだけでOKかと思いますが、念のためサービスリスタートしました。
あまりやりたくないのでゆくゆくは別手段を検討したいです。

 vi /lib/systemd/system/td-agent.service
sudo systremctl daemon-reload
sudo systemctl restgart td-agent

無事にSQLでログ格納できました。

| id | host          | user | time                | method | path            | version  | code | size | referer               | agent                                                                                                                             | xforwarded |
|  2 |1.2.3.4 | -    | 2023-06-08 11:55:59 | GET    | /               | HTTP/1.1 |  200 | 4057 | -                     | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37 | -          |
|  3 | 1.2.3.4 | -    | 2023-06-08 11:55:59 | GET    | /poweredby.png  | HTTP/1.1 |  200 | 4148 | http://111.222.333.444/ | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37 | -

追記(というか削除):
sudo vi /etc/security/limits.confで追加してたけど、パッケージで入れると自動更新させるようです。