이제 rsyslog와 collectd에서 수집한 데이터를 kafka로 보내는 설정을 해보자.
vi /etc/rsyslog.d/kafka-sender.conf
module(load="omkafka")
module(load="imfile")
input(type="imfile"
File="/var/log/syslog"
Tag="syslog"
)
template(name="outfmt" type="list" option.jsonf="on") {
property(outname="@timestamp" name="timereported" dateFormat="rfc3339" format="jsonf") property(outname="host" name="hostname" format="jsonf")
property(outname="severity" name="syslogseverity" caseConversion="upper" format="jsonf" datatype="number") property(outname="facility" name="syslogfacility" format="jsonf" datatype="number")
property(outname="syslog-tag" name="syslogtag" format="jsonf")
property(outname="source" name="app-name" format="jsonf")
property(outname="message" name="msg" format="jsonf")
}
main_queue(
queue.workerthreads="1" # threads to work on the queue
queue.dequeueBatchSize="100" # max number of messages to process at once
queue.size="10000" # max queue size
)
action(
broker=["192.168.65.193:9092"]
type="omkafka"
topic="rsyslog-logstash"
template="outfmt"
)
먼저 rsyslog의 설정이다. /etc/rsyslog.conf
에 보면 $IncludeConfig /etc/rsyslog.d/*.conf
가 있으므로 rsyslog.d/kafka-sender.conf
라는 파일을 새로 만들었다.
그리고 kafka output과 syslog
파일을 읽어오기 위한 모듈을 import한다.
omkafka
의 경우 따로 설치가 필요하다.
apt-get install rsyslog-kafka
그리고 마지막 action에서 kafka host와 보낼 토픽 이름을 적어주면 해당 카프카 토픽으로 읽어온 syslog 내용을 보내준다.
collectd의 경우 write_kafka
모듈을 켜주면 카프카 토픽으로 데이터를 보내준다.
vi /etc/collectd/collectd.conf
LoadPlugin write_kafka
<Plugin write_kafka>
Property "metadata.broker.list" "192.168.65.193:9092"
<Topic "collectd-logstash">
Format JSON
</Topic>
</Plugin>
간단하게 rsyslog와 collectd의 모듈을 사용하면 수집한 데이터를 카프카의 토픽으로 쉽게 보낼 수 있다.