FlieBeat & Kafka & Clickhouse ersetzen die erste ELK-Serie

Hintergrund

SaaS-Dienste werden in Zukunft mit Datensicherheit, Compliance und anderen Problemen konfrontiert sein. Das Geschäft des Unternehmens muss eine Reihe von Fähigkeiten zur Bereitstellung von Privatisierungen sammeln, um dem Unternehmen zu helfen, seine Wettbewerbsfähigkeit in der Branche zu verbessern. Um die Fähigkeiten des Plattformsystems zu verbessern, müssen wir eine Reihe von Datensystemen sammeln, um die Auswirkungen des Betriebs zu analysieren und die Betriebsfähigkeiten zu verbessern. Wenn jedoch im eigentlichen Entwicklungsprozess ein Big-Data-System direkt bereitgestellt wird, entsteht für die Benutzer ein relativ großer Server-Overhead. Zu diesem Zweck wählen wir eine Kompromisslösung, um unsere Datenanalysefähigkeiten zu verbessern.

Elasticsearch vs. Clickhouse

ClickHouse ist ein hochleistungsfähiges spaltenbasiertes verteiltes Datenbankverwaltungssystem. Wir haben ClickHouse getestet und festgestellt, dass es die folgenden Vorteile bietet:

ClickHouse hat einen hohen Schreibdurchsatz. Das Protokollschreibvolumen eines einzelnen Servers reicht von 50 MB bis 200 MB/s, und die Anzahl der pro Sekunde geschriebenen Datensätze übersteigt 60 W, was mehr als dem Fünffachen von ES entspricht. Das häufigere Zurückweisen von Schreibvorgängen in ES führt zu Datenverlust, Schreibverzögerung und anderen Problemen, die in ClickHouse nicht leicht auftreten.

Die Abfragegeschwindigkeit ist schnell, offiziell wird behauptet, dass die Daten im Pagecache liegen, und die Abfragerate eines einzelnen Servers liegt bei etwa 2-30GB/s, ohne Pagecache hängt die Abfragegeschwindigkeit von der Lesegeschwindigkeit der Platte ab und die Komprimierungsrate der Daten. Nach Tests ist die Abfragegeschwindigkeit von ClickHouse mehr als 5- bis 30-mal schneller als die von ES.

ClickHouse kostet weniger als ES-Server. Einerseits ist das Datenkomprimierungsverhältnis von ClickHouse höher als das von ES, und der von denselben Daten belegte Speicherplatz beträgt nur 1/3 bis 1/30 des Speicherplatzes von ES, wodurch Speicherplatz gespart und die Festplatten-E/A effektiv reduziert werden , was auch für ClickHouse-Abfragen effizienter ist. Einer der Gründe dafür ist, dass ClickHouse weniger Speicher belegt und weniger CPU-Ressourcen verbraucht als ES. Wir schätzen, dass die Verarbeitung von Protokollen mit ClickHouse die Serverkosten halbieren kann.

Bild.png

Supportfunktionen\Open-Source-Projekte ElasticSearch ClickHouse
Anfragen Java c++
Speichertyp Dokumentenspeicher spaltenorientierte Datenbank
Verteilte Unterstützung Sowohl Sharding als auch Replikate werden unterstützt Sowohl Sharding als auch Replikate werden unterstützt
Erweiterbarkeit hoch Niedrig
Schreibgeschwindigkeit langsam schnell
CPU-/Speicherauslastung hoch Niedrig
Speicherbelegung (Import von 54G-Protokolldaten) Hoch 94G (174%) Niedrig 23 G (42,6 %)
Abfragegeschwindigkeit für genaue Übereinstimmungen allgemein schnell
Fuzzy-Matching-Abfragegeschwindigkeit schnell langsam
Behördenmanagement Unterstützung Unterstützung
Abfrageschwierigkeit Niedrig hoch
Visualisierungsunterstützung hoch Niedrig
Anwendungsfälle viele Ctrip
Wartungsschwierigkeiten Niedrig hoch

Kostenanalyse

Hinweis: In Ermangelung eines Rabatts, basierend auf einer Aliyun-Analyse

Kostenpunkt Standard kosten veranschaulichen Gesamtkosten
Tierpfleger-Cluster 2 Core 4g Shared Computing n4 50G SSD Cloud Disk 222/Monat  3 Hochverfügbarkeit 666/Monat
Kafka-Cluster 4 Kerne 8g gemeinsam genutzte Standard-s650G-SSD-Cloud-Festplatte 300G-Datenfestplatte 590/Monat 3 Hochverfügbarkeit 1770/Monat
Filebeat-Bereitstellung Colocation-bezogene Anwendungen erzeugen eine gewisse Menge an Speicher- und Festplatten-Overhead, was sich auf die Verfügbarkeit von Anwendungen auswirkt.
Klickhaus  16-Core 32g Shared Computing n450G SSD Cloud Disk 1000G Daten Disk 2652/Monat 2 Hochverfügbarkeit 5304/Monat
Gesamtkosten 7740/Monat

Umgebungsbereitstellung

Zookeeper-Cluster-Bereitstellung

test2.png


yum install java-1.8.0-openjdk-devel.x86_64
/etc/profile 配置环境变量
更新系统时间
yum install  ntpdate
ntpdate asia.pool.ntp.org

mkdir zookeeper
mkdir ./zookeeper/data
mkdir ./zookeeper/logs

wget  --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zvxf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/zookeeper

export ZOOKEEPER_HOME=/usr/zookeeper/apache-zookeeper-3.7.1-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH

进入ZooKeeper配置目录
cd $ZOOKEEPER_HOME/conf

新建配置文件
vi zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/data
dataLogDir=/usr/zookeeper/logs
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

在每台服务器上执行,给zookeeper创建myid
echo "1" > /usr/zookeeper/data/myid
echo "2" > /usr/zookeeper/data/myid
echo "3" > /usr/zookeeper/data/myid

进入ZooKeeper bin目录
cd $ZOOKEEPER_HOME/bin
sh zkServer.sh start

Kafka-Cluster-Bereitstellung

mkdir -p /usr/kafka
chmod 777 -R /usr/kafka
wget  --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.2.0/kafka_2.12-3.2.0.tgz
tar -zvxf kafka_2.12-3.2.0.tgz -C /usr/kafka


不同的broker Id 设置不一样,比如 1,2,3
broker.id=1
listeners=PLAINTEXT://ip:9092
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dir=/usr/kafka/logs
num.partitions=5
num.recovery.threads.per.data.dir=3
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
zookeeper.connection.timeout.ms=30000
group.initial.rebalance.delay.ms=0

后台常驻进程启动kafka
nohup /usr/kafka/kafka_2.12-3.2.0/bin/kafka-server-start.sh /usr/kafka/kafka_2.12-3.2.0/config/server.properties   >/usr/kafka/logs/kafka.log >&1 &

/usr/kafka/kafka_2.12-3.2.0/bin/kafka-server-stop.sh

$KAFKA_HOME/bin/kafka-topics.sh --list --bootstrap-server  ip:9092

$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server ip:9092 --topic test --from-beginning

$KAFKA_HOME/bin/kafka-topics.sh  --create --bootstrap-server  ip:9092  --replication-factor 2 --partitions 3 --topic xxx_data

FileBeat-Bereitstellung

sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

Create a file with a .repo extension (for example, elastic.repo) in your /etc/yum.repos.d/ directory and add the following lines:
在/etc/yum.repos.d/ 目录下创建elastic.repo

[elastic-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

yum install filebeat
systemctl enable filebeat
chkconfig --add filebeat

Beschreibung der FileBeat-Konfigurationsdatei, Pit 1 (muss keys_under_root: true setzen). Wenn Sie die Nachrichtenfelder von Kafka nicht wie folgt festlegen:

test.png

文件目录: /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /root/logs/xxx/inner/*.log
  json:  
如果不设置该索性,所有的数据都存储在message里面,这样设置以后数据会平铺。
       keys_under_root: true 
output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
  topic: 'xxx_data_clickhouse'
  partition.round_robin:
            reachable_only: false
            required_acks: 1
            compression: gzip
processors: 
剔除filebeat 无效的字段数据
    - drop_fields:  
        fields: ["input", "agent", "ecs", "log", "metadata", "timestamp"]
        ignore_missing: false
        
nohup ./filebeat -e -c /etc/filebeat/filebeat.yml > /user/filebeat/filebeat.log & 
输出到filebeat.log文件中,方便排查

Clickhouse-Bereitstellung

test3.png

检查当前CPU是否支持SSE 4.2,如果不支持,需要通过源代码编译构建
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
返回 "SSE 4.2 supported" 表示支持,返回 "SSE 4.2 not supported" 表示不支持

创建数据保存目录,将它创建到大容量磁盘挂载的路径
mkdir -p /data/clickhouse
修改/etc/hosts文件,添加clickhouse节点
举例:
10.190.85.92 bigdata-clickhouse-01
10.190.85.93 bigdata-clickhouse-02

服务器性能参数设置:
cpu频率调节,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节,性能最好
echo 'performance' | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

内存调节,不要禁用 overcommit
echo 0 | tee /proc/sys/vm/overcommit_memory

始终禁用透明大页(transparent huge pages)。 它会干扰内存分配器,从而导致显着的性能下降
echo 'never' | tee /sys/kernel/mm/transparent_hugepage/enabled

首先,需要添加官方存储库:
yum install yum-utils
rpm --import <https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG>
yum-config-manager --add-repo <https://repo.clickhouse.tech/rpm/stable/x86_64>

查看clickhouse可安装的版本:
yum list | grep clickhouse
运行安装命令:
yum -y install clickhouse-server clickhouse-client

修改/etc/clickhouse-server/config.xml配置文件,修改日志级别为information,默认是trace
<level>information</level>
执行日志所在目录:

正常日志
/var/log/clickhouse-server/clickhouse-server.log
异常错误日志
/var/log/clickhouse-server/clickhouse-server.err.log

查看安装的clickhouse版本:
clickhouse-server --version
clickhouse-client --password

sudo clickhouse stop
sudo clickhouse tart
sudo clickhouse start

test5.png

Zusammenfassen

Der gesamte Bereitstellungsprozess ist auf viele Gruben getreten, insbesondere die Parametereinstellungen von filebeat yml. Die Konfiguration von Clickhouse zeigt, dass ich einen weiteren Artikel aktualisieren werde, um die Gruben zu synchronisieren, auf die ich dabei getreten bin. Ich habe meinen Blog schon lange nicht mehr aktualisiert und sehe mich oft mit der Frage konfrontiert, was nach dem 35. Geburtstag des Blogs zu tun ist. Ich selbst habe mir ehrlich gesagt noch keine Gedanken darüber gemacht, was ich in Zukunft machen soll.Der Kern ist kontinuierliches Lernen & Output. Bauen Sie weiter Ihren eigenen Graben auf, egal ob es sich um technische Experten, Geschäftsexperten, Architektur, Management usw. handelt. Persönlich schlage ich vor, dass Sie, wenn Sie weiterhin Code schreiben können, an vorderster Front kämpfen sollten, und das Management ist vollständig an das Unternehmen gebunden. Wenn Sie keine bekannte große Fabrik sind, ist dies ein weiterer Look. Wenn das Unternehmen, für das ich arbeite, keinen großen Brancheneinfluss hat, habe ich das Gefühl, dass ich an vorderster Front kämpfen und in Zukunft einen neuen Job wählen kann. Stärker berücksichtigt werden der Brancheneinfluss, der Geschäftssinn und die Fähigkeiten der technischen Architektur. Jetzt bin ich 35 und sehe jedem Tag gelassen entgegen.

Ich denke du magst

Origin juejin.im/post/7120880190003085320
Empfohlen
Rangfolge