Actual Combat | Конструкция точного мониторинга полного канала

Actual Combat | Конструкция точного мониторинга полного канала

Введение в Pinpoint

Pinpoint - это инструмент APM для крупномасштабных распределенных систем, написанный на Java. Некоторые люди также любят называть такие инструменты системами цепочки вызовов и распределенными системами отслеживания. Мы знаем, что интерфейсная часть инициирует запрос запроса к серверной части, а внутренняя служба может вызывать несколько служб, и каждая служба может вызывать другие службы и, наконец, возвращать результаты и суммировать их на странице. Если в определенной ссылке происходит сбой, инженерам сложно точно определить местонахождение вызова службы, вызвавшего проблему. Функция связанных инструментов, таких как Pinpoint, заключается в отслеживании полной ссылки вызова каждого запроса и сбора данных о производительности каждой службы. по ссылке вызова.Данные, чтобы инженеры могли быстро найти проблемы. Адрес Github: https://github.com/naver/pinpoint

Схема архитектуры следующая (картинка взята с официального сайта):
Actual Combat | Конструкция точного мониторинга полного канала

Описание архитектуры:

  • Pinpoint-Collector: сбор различных данных о производительности

  • Pinpoint-Agent: зонд, связанный с запущенным вами приложением.

  • Pinpoint-Web: отображение собранных данных в виде веб-страниц.

  • HBase Storage: собранные данные хранятся в HBase.

Точная сборка

Здесь мы храним данные прямо в HDFS, поэтому общий план такой:
Actual Combat | Конструкция точного мониторинга полного канала

Версия ПО:
Actual Combat | Конструкция точного мониторинга полного канала

Установить JDK

Разархивируйте JDK в каталог opt и настройте переменные среды

tar xf jdk-8u131-linux-x64.tar.gz -C /opt

vim / etc / profile

export JAVA_HOME=/opt/jdk1.8.0_131

export PATH=$JAVA_HOME/bin:$PATH

Загрузить переменные среды

source /etc/profile

Настроить без пароля

Настройте взаимное доверие между узлами 10.2.42.61, 10.2.42.62 и 10.2.42.63, которые могут работать с тремя одновременно.

ssh-keygen

ssh-copy-id 10.2.42.61

ssh-copy-id 10.2.42.62

ssh-copy-id 10.2.42.63

Если нет ssh-copy-id, используйте следующую команду для установки

yum -y install openssh-clients

Настроить сопоставление хостов

Для пяти хостов необходимо настроить сопоставление хостов.
vim / etc / hosts

10.2.42.61    DCA-APP-COM-pinpoint-HBaseMaster

10.2.42.62    DCA-APP-COM-pinpoint-HBaseSlave01

10.2.42.63    DCA-APP-COM-pinpoint-HBaseSlave02

Установить кластер zookeeper

Разархивируйте установочный пакет в каталог opt, и все три могут работать одновременно.

tar xf zookeeper-3.4.10.tar.gz -C /opt/

cd /opt/zookeeper-3.4.10/conf

cp zoo_sample.cfg zoo.cfg

Я пришел на zoo.cfg

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/data/zookeeper/data

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=10.2.42.61:12888:13888

server.2=10.2.42.62:12888:13888

server.3=10.2.42.63:12888:13888

Создать каталог данных

mkdir /data/zookeeper/data -p

Добавить идентификатор кампании 10.2.42.61

echo 1 > /data/zookeeper/data/myid

Добавить идентификатор кампании 10.2.42.62

echo 2 > /data/zookeeper/data/myid

Добавить идентификатор кампании 10.2.42.63

echo 3 > /data/zookeeper/data/myid

Начать обслуживание

/opt/zookeeper-3.4.10/bin/zkServer.sh start

Просмотр статуса кластера

[root@DCA-APP-COM-pinpoint-HBaseMaster data]# /opt/zookeeper-3.4.10/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

Установить кластер Hadoop

Actual Combat | Конструкция точного мониторинга полного канала
Разархивируйте установочный файл в каталог opt .. Примечание: Без специальных инструкций следующие операции выполняются на трех машинах одновременно.

tar xf hadoop-2.8.3.tar.gz -C /opt/

Войдите в каталог файла конфигурации hadoop и настройте

cd /opt/hadoop-2.8.3/etc/hadoop

Настройте hadoop-env.sh, укажите операционную среду java
vim hadoop-env.sh из hadoop

#export JAVA_HOME=${JAVA_HOME}     # 默认就是这个,所以实际上这一步可以跳过

export JAVA_HOME=/opt/jdk1.8.0_131

Настройте core-site.xml, укажите для доступа к веб-интерфейсу hadoop для доступа к
vim core-site.xml

<configuration>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://10.2.42.61:9000</value>

  </property>

  <property>

  <name>io.file.buffer.size</name>

  <value>131072</value>

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

    <value>/data/hadoop/tmp</value>

  </property>

</configuration>

Поместите hdfs-site.xml
vim hdfs-site.xml

<configuration>

<property>

  <name>dfs.namenode.secondary.http-address</name>

  <value>10.2.42.61:50090</value>

  </property>

  <property>

    <name>dfs.replication</name>

    <value>2</value>

  </property>

  <!-- 指定namenode数据存放临时目录,自行创建 -->

  <property>

    <name>dfs.namenode.name.dir</name>

    <value>file:/data/hadoop/dfs/name</value>

  </property>

  <!-- 指定datanode数据存放临时目录,自行创建 -->

  <property>

    <name>dfs.datanode.data.dir</name>

    <value>file:/data/hadoop/dfs/data</value>

  </property>

</configuration>

Настройте mapred-site.xml, который является конфигурацией задачи mapreduce, и вы сможете просмотреть статус выполненного задания.
vim mapred-site.xml

<configuration>

  <property>

    <name>mapreduce.framework.name</name>

      <value>yarn</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.address</name>

      <value>0.0.0.0:10020</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.webapp.address</name>

      <value>0.0.0.0:19888</value>

  </property>

</configuration>

Настройте yarn-site.xml, datanode не нужно изменять этот файл конфигурации.
vim yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

<property>

  <name>yarn.resourcemanager.address</name>

  <value>10.2.42.61:8032</value>

</property>

<property>

  <name>yarn.resourcemanager.scheduler.address</name>

  <value>10.2.42.61:8030</value> 

</property>

<property>

  <name>yarn.resourcemanager.resource-tracker.address</name>

  <value>10.2.42.61:8031</value> 

</property>

<property>

  <name>yarn.resourcemanager.admin.address</name>

  <value>10.2.42.61:8033</value> 

</property>

<property>

  <name>yarn.resourcemanager.webapp.address</name>

  <value>10.2.42.61:8088</value> 

</property>

</configuration>

Настройте datanode, чтобы облегчить namenode для вызова
ведомых устройств vim

10.2.42.62

10.2.42.63

Создать каталог данных

mkdir /data/hadoop/tmp -p

mkdir /data/hadoop/dfs/name -p

mkdir /data/hadoop/dfs/data -p

Отформатируйте namenode. Так
как файловая система на namenode - HDFS, его необходимо отформатировать.

/opt/hadoop-2.8.3/bin/hdfs namenode -format

Следующее указывает на то, что форматирование прошло успешно.
Actual Combat | Конструкция точного мониторинга полного канала

Запустить кластер

/opt/hadoop-2.8.3/sbin/start-all.sh

Выходной журнал выглядит следующим образом:
Actual Combat | Конструкция точного мониторинга полного канала
запустите службу истории заданий, проверьте состояние работы mapreduce.

/opt/hadoop-2.8.3/sbin/mr-jobhistory-daemon.sh start historyserver

Адрес доступен через URL

http://10.2.42.61:50070  #整个hadoop 集群

http://10.2.42.61:50090  #SecondaryNameNode的情况

http://10.2.42.61:8088   #resourcemanager的情况

http://10.2.42.61:19888  #historyserver(MapReduce历史运行情况)

Actual Combat | Конструкция точного мониторинга полного канала

Настроить кластер HBase

Примечание: Никакого специального утверждения не делается. Следующие операции выполняются на трех узлах одновременно.
**
Разархивируйте установочный пакет в каталог opt.

tar xf hbase-1.2.6-bin.tar.gz -C /opt/

Скопируйте файл конфигурации hdfs, это необходимо для обеспечения согласованности файлов конфигурации на обеих сторонах hbase и hdfs.

cp /opt/hadoop-2.8.3/etc/hadoop/hdfs-site.xml /opt/hbase-1.2.6/conf/

Настройте файл конфигурации HBase
vim hbase-site.xml

<configuration>

  <property>

    <name>hbase.zookeeper.property.clientPort</name>

    <value>2181</value>

  </property>

  <property>

    <name>hbase.zookeeper.quorum</name>

    <value>10.2.42.61,10.2.42.62,10.2.42.63</value>

    <description>The directory shared by RegionServers.</description>

  </property>

  <property>

    <name>hbase.zookeeper.property.dataDir</name>

    <value>/data/zookeeper/zkdata</value>

    <description>

    注意这里的zookeeper数据目录与hadoop ha的共用,也即要与 zoo.cfg 中配置的一致

    Property from ZooKeeper config zoo.cfg.

    The directory where the snapshot is stored.

    </description>

  </property>

  <property>

    <name>hbase.rootdir</name>

    <value>hdfs://10.2.42.61:9000/hbase</value>

    <description>The directory shared by RegionServers.

                 官网多次强调这个目录不要预先创建,hbase会自行创建,否则会做迁移操作,引发错误

                 至于端口,有些是8020,有些是9000,看 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 里面的配置,本实验配置的是

                 dfs.namenode.rpc-address.hdcluster.nn1 , dfs.namenode.rpc-address.hdcluster.nn2

    </description>

  </property>

  <property>

    <name>hbase.cluster.distributed</name>

    <value>tre</value>

    <description>分布式集群配置,这里要设置为true,如果是单节点的,则设置为false

      The mode the cluster will be in. Possible values are

      false: standalone and pseudo-distributed setups with managed ZooKeeper

      true: fully-distributed with unmanaged ZooKeeper Quorum (see hbase-env.sh)

    </description>

  </property>

</configuration>

Настроить файл
regionservers vim regionservers

10.2.42.62

10.2.42.63

Настройте hbase-env.sh Поскольку мы создали zookeeper сами, нам нужно добавить следующий фрагмент кода.

export HBASE_MANAGES_ZK=false

Запустить кластер

/opt/hbase-1.2.6/bin/start-hbase.sh

Actual Combat | Конструкция точного мониторинга полного канала

Просмотр состояния кластера
1. Просмотр по URL-адресу: http://10.2.42.61:16010/master-status
2. Просмотр через командную строку

/opt/hbase-1.2.6/bin/hbase shell

hbase(main):002:0> status

1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load

Если сообщается об ошибке: ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master инициализирует
1. Сначала остановите HBase: /opt/hbase-1.2.6/bin/stop-hbase.sh
2. Запустите региональный сервер : / opt / hbase- 1.2.6 / bin / hbase-daemon.sh запустить региональный сервер
3. Запустить мастер: /opt/hbase-1.2.6/bin/hbase-daemon.sh запустить мастер

Инициализируйте библиотеку PinPoint HBase, необходимо загрузить hbase-create.hbase.
Адрес: https://github.com/naver/pinpoint/tree/master/hbase/scripts

/opt/hbase-1.2.6/bin/hbase shell /root/install/hbase-create.hbase

Actual Combat | Конструкция точного мониторинга полного канала

Настроить PinPoint-Collecter

Разархивируйте пакет war в каталог веб-приложений tomcat

unzip pinpoint-collector-1.7.1.war -d /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT

Каталог файла конфигурации /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes
изменить файл конфигурации hbase.properties

hbase.client.host=10.2.42.61,10.2.42.62,10.2.42.63

hbase.client.port=2181

......

Измените файл конфигурации pinpoint-collector.properties

cluster.enable=true

cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63

......

flink.cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63

flink.cluster.zookeeper.sessiontimeout=3000

Запустить кота

/home/tomcat/apache-tomcat-8.0.47/bin/startup.sh

Настроить PinPoint-WEB

Разархивируйте соответствующий военный пакет в каталог веб-приложений tomcat

unzip pinpoint-web-1.7.1.war -d /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT

Каталог файлов конфигурации /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes
vim hbase.properties

hbase.client.host=10.2.42.61,10.2.42.62,10.2.42.63

hbase.client.port=2181

......

vim pinpoint-web.properties

cluster.enable=true

cluster.web.tcp.port=9997

cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63

cluster.zookeeper.sessiontimeout=30000

cluster.zookeeper.retry.interval=60000

.......

Запустить кота

/home/tomcat/apache-tomcat-8.0.47/bin/startup.sh

Посетите URL: http://10.2.42.60:8080/#/main
Actual Combat | Конструкция точного мониторинга полного канала

Настроить зонд

Скопируйте pinpoint-agent-1.7.1.tar.gz на сервер приложений и разархивируйте его в каталог tomcat.

tar xf pinpoint-agent-1.7.1.tar.gz -C /home/tomcat

Измените файл конфигурации:
vim /home/tomcat/ppagent/pinpoint.config

# ip为pinpoint-collecter的服务器ip

profiler.collector.ip=10.2.42.59

Настройте сценарий запуска Tomcat Catalina.sh, добавьте в сценарий следующий код

CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"

CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"

CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"

Если это пакет jar, начните напрямую с Java, вам необходимо соблюдать следующие параметры

java -javaagent:/home/tomcat/tmp/ppagent/pinpoint-bootstrap-1.7.1.jar -Dpinpoint.agentId=jss-spring-boot-app11201 -Dpinpoint.applicationName=jss-spring-boot-app -jar jssSpringBootDemo-0.0.1-SNAPSHOT.jar

После настройки перезапустите tomcat, а затем проверьте следующее на веб-стороне:
Actual Combat | Конструкция точного мониторинга полного канала

рекомендация

отblog.51cto.com/15080014/2654775
рекомендация