文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

OpenStack 高性能监控工具:Monasca

2024-12-03 12:45

关注

介绍

Monasca 是一个多租户监控即服务工具,可以帮助IT团队分析日志数据并设置告警和通知。

OpenStack环境中的监控需求是巨大,多样且高度复杂的。Monasca的项目任务是提供一种多租户,高度可扩展,高性能和容错的监控即服务解决方案。

Monasca为高级监控提供了可扩展的平台,运营商和租户均可使用该平台来获取有关其基础架构和应用的运行状态。

Monasca使用REST API进行高速的日志处理和查询。它集成了流告警引擎,通知引擎和聚合引擎。

您可以使用Monasca实现的用例非常多样。Monasca遵循微服务架构,其中几个服务分布在多个存储库中。每个模块旨在为整个监控解决方案提供离散服务,并且可以根据运营商/客户的需求进行部署。

架构

下图概述了Monasca的指标管道以及所涉及组件的交互。

核心组件

除了直接向API发送请求之外,还可以使用以下工具与Monasca进行交互:

Libraries:

Grafana集成:

第三方技术与工具

Monasca使用多种第三方技术:

安装

手工安装

monasca的所有组件都可以安装在一个节点上,例如openstack控制器节点上,也可以将其部署在多节点上。本文中,将在我的openstack集群中创建的新VM中安装monasca-api,该VM具有关联的浮动ip。Monasca-agent已安装在控制器节点上。代理节点通过浮动ip将指标发布到api节点。它们在同一子网中。

安装我们需要的软件包和工具

  1. apt-get install -y git 
  2. apt-get install openjdk-7-jre-headless python-pip python-dev 

安装mysql数据库如果您在openstack控制器节点中安装了monasca-api,则可以跳过安装,将已安装的msyql用于openstack服务。

  1. apt-get install -y mysql-server 

创建monasca数据库架构,在此处下载mon.sql( https://raw.githubusercontent.com/stackforge/cookbook-monasca-schema/master/files/default/mysql/mon.sql)

  1. mysql -uroot -ppassword < mon_mysql.sql 

安装Zookeeper安装Zookeeper并重新启动它。我使用本地主机接口,并且只有一个Zookeeper,因此默认配置文件不需要配置。

  1. apt-get install -y zookeeper zookeeperd zookeeper-bin 
  2. service zookeeper restart 

安装和配置kafka

  1. wget http://apache.mirrors.tds.net/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz 
  2. mv kafka_2.9.2-0.8.1.1.tgz /opt 
  3. cd /opt 
  4. tar zxf kafka_2.9.2-0.8.1.1.tgz 
  5. ln -s /opt/kafka_2.9.2-0.8.1.1/ /opt/kafka 
  6. ln -s /opt/kafka/config /etc/kafka 

创建kafka系统用户,kafka服务将以该用户身份启动。

  1. useradd kafka -U -r 

在/etc/init/kafka.conf中创建kafka启动脚本,将以下内容复制 到/etc/init/kafka.conf中并保存。

  1. description "Kafka" 
  2.  
  3. start on runlevel [2345] 
  4. stop on runlevel [!2345] 
  5.   
  6. respawn 
  7.  
  8. limit nofile 32768 32768 
  9.  
  10. # If zookeeper is running on this box also give it time to start up properly 
  11. pre-start script 
  12.   if [ -e /etc/init.d/zookeeper ]; then 
  13.       /etc/init.d/zookeeper restart 
  14.   fi 
  15. end script 
  16.  
  17. # Rather than using setuid/setgid sudo is used because the pre-start task must run as root 
  18. exec sudo -Hu kafka -g kafka KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" JMX_PORT=9997 /opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties 

配置kafka,vim /etc/kafka/server.properties,确保配置了以下内容:

  1. host.name=localhost 
  2. advertised.host.name=localhost 
  3. log.dirs=/var/kafka 

创建 kafka log目录

  1. mkdir /var/kafka 
  2. mkdir /var/log/kafka 
  3. chown -R kafka. /var/kafka/ 
  4. chown -R kafka. /var/log/kafka/ 

启动kafka服务

  1. service kafka start 

下一步就是创建 kafka topics

  1. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 64 --topic metrics 
  2. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic events 
  3. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic raw-events 
  4. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transformed-events 
  5. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-definitions 
  6. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transform-definitions 
  7. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-state-transitions 
  8. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-notifications 
  9. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-notifications 
  10. /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic retry-notifications 

安装和配置 influxdb

  1. curl -sL https://repos.influxdata.com/influxdb.key | apt-key add - 
  2. echo "deb https://repos.influxdata.com/ubuntu trusty stable" > /etc/apt/sources.list.d/influxdb.list 
  3. apt-get update 
  4. apt-get install -y apt-transport-https 
  5. apt-get install -y influxdb 
  6.  
  7. service influxdb start 

创建 influxdb database, user, password, retention policy, 同时修改密码。

  1. influx 
  2. CREATE DATABASE mon 
  3. CREATE USER monasca WITH PASSWORD 'tyun' 
  4. CREATE RETENTION POLICY persister_all ON mon DURATION 90d REPLICATION 1 DEFAULT 
  5. exit 

安装与配置 storm

  1. wget http://apache.mirrors.tds.net/storm/apache-storm-0.9.6/apache-storm-0.9.6.tar.gz 
  2. mkdir /opt/storm 
  3. cp apache-storm-0.9.6.tar.gz /opt/storm/ 
  4. cd /opt/storm/ 
  5. tar xzf apache-storm-0.9.6.tar.gz 
  6. ln -s /opt/storm/apache-storm-0.9.6 /opt/storm/current 
  7.  
  8. useradd storm -U -r 
  9. mkdir /var/storm 
  10. mkdir /var/log/storm 
  11. chown -R storm. /var/storm/ 
  12. chown -R storm. /var/log/storm/ 

修改storm.yaml, vim current/storm/conf/storm.yaml

  1. ### base 
  2. java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib" 
  3. storm.local.dir: "/var/storm" 
  4.  
  5. ### zookeeper.* 
  6. storm.zookeeper.servers: 
  7.   - "localhost" 
  8. storm.zookeeper.port: 2181 
  9. storm.zookeeper.retry.interval: 5000 
  10. storm.zookeeper.retry.times: 29 
  11. storm.zookeeper.root: "/storm" 
  12. storm.zookeeper.session.timeout: 30000 
  13.  
  14. ### supervisor.* configs are for node supervisors 
  15. supervisor.slots.ports: 
  16.   - 6701 
  17.   - 6702 
  18.   - 6703 
  19.   - 6704 
  20. supervisor.childopts: "-Xmx1024m" 
  21.  
  22. ### worker.* configs are for task workers 
  23. worker.childopts: "-Xmx1280m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote" 
  24.  
  25. ### nimbus.* configs are for the masteri 
  26. nimbus.host: "localhost" 
  27. nimbus.thrift.port: 6627 
  28. mbus.childopts: "-Xmx1024m" 
  29.  
  30. ### ui.* configs are for the master 
  31. ui.host: 127.0.0.1 
  32. ui.port: 8078 
  33. ui.childopts: "-Xmx768m" 
  34.  
  35. ### drpc.* configs 
  36.  
  37. ### transactional.* configs 
  38. transactional.zookeeper.servers: 
  39.   - "localhost" 
  40. transactional.zookeeper.port: 2181 
  41. transactional.zookeeper.root: "/storm-transactional" 
  42.  
  43. ### topology.* configs are for specific executing storms 
  44. topology.acker.executors: 1 
  45. topology.debug: false 
  46.  
  47. logviewer.port: 8077 
  48. logviewer.childopts: "-Xmx128m" 

创建storm supervisor 启动脚本,vim /etc/init/storm-supervisor.conf

  1. # Startup script for Storm Supervisor 
  2.  
  3. description "Storm Supervisor daemon" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. kill timeout 240 
  10. respawn limit 25 5 
  11.  
  12. setgid storm 
  13. setuid storm 
  14. chdir /opt/storm/current 
  15. exec /opt/storm/current/bin/storm supervisor 

创建Storm nimbus 启动脚本。vim /etc/init/storm-nimbus.conf

  1. # Startup script for Storm Nimbus 
  2.  
  3. description "Storm Nimbus daemon" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. kill timeout 240 
  10. respawn limit 25 5 
  11.  
  12. setgid storm 
  13. setuid storm 
  14. chdir /opt/storm/current 
  15. exec /opt/storm/current/bin/storm nimbus 

启动supervisor 与 nimbus

  1. service storm-supervisor start 
  2. service storm-nimbus start 

安装monasca api python软件包

一些monasca组件同时提供python和java代码,主要是我选择python代码进行部署。

  1. pip install monasca-common 
  2. pip install gunicorn 
  3. pip install greenlet  # Required for both 
  4. pip install eventlet  # For eventlet workers 
  5. pip install gevent    # For gevent workers 
  6. pip install monasca-api 
  7. pip install influxdb 

vim /etc/monasca/api-config.ini,将主机修改为您的IP地址

  1. [DEFAULT
  2. name = monasca_api 
  3.    
  4. [pipeline:main] 
  5. Add validator in the pipeline so the metrics messages can be validated. 
  6. pipeline = auth keystonecontext api 
  7.    
  8. [app:api] 
  9. paste.app_factory = monasca_api.api.server:launch 
  10.    
  11. [filter:auth] 
  12. paste.filter_factory = keystonemiddleware.auth_token:filter_factory 
  13.    
  14. [filter:keystonecontext] 
  15. paste.filter_factory = monasca_api.middleware.keystone_context_filter:filter_factory 
  16.    
  17. [server:main] 
  18. use = egg:gunicorn#main 
  19. host = 192.168.2.23 
  20. port = 8082 
  21. workers = 1 
  22. proc_name = monasca_api 

vim /etc/monasca/api-config.conf,修改以下内容

  1. [DEFAULT
  2. # logging, make sure that the user under whom the server runs has permission 
  3. to write to the directory. 
  4. log_file = monasca-api.log 
  5. log_dir = /var/log/monasca/api/ 
  6. debug=False 
  7. region = RegionOne 
  8. [security] 
  9. # The roles that are allowed full access to the API. 
  10. default_authorized_roles = admin, user, domainuser, domainadmin, monasca-user 
  11.  
  12. # The roles that are allowed to only POST metrics to the API. This role would be used by the Monasca Agent. 
  13. agent_authorized_roles = admin 
  14.  
  15. # The roles that are allowed to only GET metrics from the API. 
  16. read_only_authorized_roles = admin 
  17.  
  18. # The roles that are allowed to access the API on behalf of another tenant. 
  19. For example, a service can POST metrics to another tenant if they are a member of the "delegate" role. 
  20. delegate_authorized_roles = admin 
  21.  
  22. [kafka] 
  23. # The endpoint to the kafka server 
  24. uri = localhost:9092 
  25.  
  26. [influxdb] 
  27. Only needed if Influxdb database is used for backend. 
  28. # The IP address of the InfluxDB service. 
  29. ip_address = localhost 
  30.  
  31. # The port number that the InfluxDB service is listening on
  32. port = 8086 
  33.  
  34. # The username to authenticate with
  35. user = monasca 
  36.  
  37. # The password to authenticate with
  38. password = tyun 
  39.  
  40. # The name of the InfluxDB database to use. 
  41. database_name = mon 
  42.  
  43. [database
  44. url = "mysql+pymysql://monasca:tyun@127.0.0.1/mon" 
  45.  
  46.  
  47. [keystone_authtoken] 
  48. identity_uri = http://192.168.1.11:35357 
  49. auth_uri = http://192.168.1.11:5000 
  50. admin_password = tyun 
  51. admin_user = monasca 
  52. admin_tenant_name = service 
  53. cafile = 
  54. certfile = 
  55. keyfile = 
  56. insecure = false 

注释掉[mysql]部分,其他部分保持默认。

创建monasca系统用户并进入目录

  1. useradd monasca -U -r 
  2. mkdir /var/log/monasca 
  3. mkdir /var/log/monasca/api 
  4. chown -R monasca. /var/log/monasca/ 

在openstack控制器节点上,创建monasca用户密码,为租户服务中的用户monasca分配管理员角色。

  1. openstack user create --domain default --password tyun monasca  
  2. openstack role add --project service --user monasca admin 
  3.  
  4. openstack service create --name monasca --description "Monasca monitoring service" monitoring 
  5.  
  6. create endpoint  
  7. openstack endpoint create --region RegionOne monasca public http://192.168.1.143:8082/v2.0 
  8. openstack endpoint create --region RegionOne monasca internal http://192.168.1.143:8082/v2.0 
  9. openstack endpoint create --region RegionOne monasca admin http://192.168.1.143:8082/v2.0 

192.168.1.143是我的api虚拟机地址的浮动IP,请将其更改为您的IP。

创建monasca api启动脚本,vim /etc/init/monasca-api.conf

  1. # Startup script for the Monasca API 
  2.  
  3. description "Monasca API Python app" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. setgid monasca 
  10. setuid monasca 
  11. exec /usr/local/bin/gunicorn -n monasca-api -k eventlet --worker-connections=2000 --backlog=1000 --paste /etc/monasca/api-config.ini 

安装monasca-persister

创建monasca-persister启动脚本

vim /etc/init/monasca-persister.conf

  1. # Startup script for the Monasca Persister 
  2.  
  3. description "Monasca Persister Python app" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. setgid monasca 
  10. setuid monasca 
  11. exec /usr/bin/java -Dfile.encoding=UTF-8 -cp /opt/monasca/monasca-persister.jar monasca.persister.PersisterApplication server /etc/monasca/persister-config.yml 

启动monasca-persister

  1. service monasca-persister start 

安装monasca-notificatoin

  1. pip install --upgrade monasca-notification 
  2. apt-get install sendmail 

将notification.yaml复制到/etc/monasca/创建启动脚本,vim /etc/init/monasca-notification.conf

  1. # Startup script for the monasca_notification 
  2.  
  3. description "Monasca Notification daemon" 
  4. start on runlevel [2345] 
  5.  
  6. console log 
  7. respawn 
  8.  
  9. setgid monasca 
  10. setuid monasca 
  11. exec /usr/bin/python /usr/local/bin/monasca-notification 

启动通知服务

  1. service monasca-notification start 

安装monasca-thresh复制monasca-thresh到/etc/init.d/复制monasca-thresh.jar到/opt/monasca-thresh/复制thresh-config.yml到/etc/monasca /并修改主机以及数据库信息启动monasca-thresh

  1. service monasca-thresh start 

安装monasca-agent

在openstack控制器节点上安装monasca-agent,以便它可以监控openstack服务进程。

  1. sudo pip install --upgrade monasca-agent 

设置monasca-agent,将用户域ID和项目域ID更改为默认值。

  1. monasca-setup -u monasca -p tyun --user_domain_id e25e0413a70c41449d2ccc2578deb1e4 --project_domain_id e25e0413a70c41449d2ccc2578deb1e4 --user monasca \ 
  2.  --project_name service -s monitoring --keystone_url http://192.168.1.11:35357/v3 --monasca_url http://192.168.1.143:8082/v2.0 --config_dir /etc/monasca/agent --log_dir /var/log/monasca/agent --overwrite 

加载认证脚本admin-rc.sh,然后运行monasca metric-list。

DevStack安装

运行Monasca DevStack至少需要一台具有10GB RAM的主机。

可在此处找到安装和运行Devstack的说明:

  1. https://docs.openstack.org/devstack/latest/ 

要在DevStack中运行Monasca,请执行以下三个步骤。

克隆DevStack代码库。

  1. git clone https://git.openstack.org/openstack-dev/devstack 

将以下内容添加到devstack目录根目录中的DevStack local.conf文件中。如果local.conf不存在,则可能需要创建它。

  1. BEGIN DEVSTACK LOCAL.CONF CONTENTS 
  2.  
  3. [[local|localrc]] 
  4. DATABASE_PASSWORD=secretdatabase 
  5. RABBIT_PASSWORD=secretrabbit 
  6. ADMIN_PASSWORD=secretadmin 
  7. SERVICE_PASSWORD=secretservice 
  8. SERVICE_TOKEN=111222333444 
  9.  
  10. LOGFILE=$DEST/logs/stack.sh.log 
  11. LOGDIR=$DEST/logs 
  12. LOG_COLOR=False 
  13.  
  14. # The following two variables allow switching between Java and Python for the implementations 
  15. of the Monasca API and the Monasca Persister. If these variables are not setthen the 
  16. default is to install the Python implementations of both the Monasca API and the Monasca Persister. 
  17.  
  18. # Uncomment one of the following two lines to choose Java or Python for the Monasca API. 
  19. MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} 
  20. # MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} 
  21.  
  22. # Uncomment of the following two lines to choose Java or Python for the Monasca Pesister. 
  23. MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} 
  24. # MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} 
  25.  
  26. # Uncomment one of the following two lines to choose either InfluxDB or Vertica. 
  27. default "influxdb" is selected as metric DB 
  28. MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb} 
  29. # MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica} 
  30.  
  31. # This line will enable all of Monasca. 
  32. enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api 
  33.  
  34. END DEVSTACK LOCAL.CONF CONTENTS 

从devstack目录的根目录运行“ ./stack.sh”。

如果要使用最少的OpenStack组件运行Monasca,可以将以下两行添加到local.conf文件中。

  1. disable_all_services 
  2. enable_service rabbit mysql key 

如果您还希望安装Tempest测试,请添加 tempest

  1. enable_service rabbit mysql key tempest 

要启用Horizon和Monasca UI,请添加 horizon

  1. enable_service rabbit mysql key horizon tempest 

使用Vagrant

Vagrant可用于使用Vagrantfile部署运行有Devstack和Monasca的VM。安装Vagrant后,只需在../monasca-api/devstack目录中运行vagrant up命令。

要在devstack安装中使用本地代码库,请将更改提交到本地存储库的master分支,然后在配置文件中修改与要使用的本地存储库相对应的变量file://my/local/repo/location。要使用monasca-api repo的本地实例,请将更改enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api为enable_plugin monasca-api file://my/repo/is/here。这两个设置仅在重建devstack VM时生效。

使用Vagrant将Vertica启用为Metrics DB

Monasca支持同时使用InfluxDB和Vertica来存储指标和告警状态历史记录。默认情况下,在DevStack环境中启用InfluxDB。

Vertica是Hewlett Packard Enterprise的商业数据库。可以下载免费的Community Edition(CE)安装程序,要启用Vertica,请执行以下操作:

MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica}

使用PostgreSQL或MySQL

Monasca支持使用PostgreSQL和MySQL,因此该devstack插件也支持。启用postgresql或mysql。

要使用MySQL设置环境,请使用:

  1. enable_service mysql 

另外,对于PostgreSQL,请使用:

  1. enable_service postgresql 

使用ORM支持

ORM支持可以通过MONASCA_DATABASE_USE_ORM变量来控制。但是,如果启用了PostgreSQL(也称为数据库后端),则将强制提供ORM支持

enable_service postgresql

加强Apache镜像

如果由于某种原因APACHE_MIRROR而无法使用,则可以通过以下方式强制执行:

  1. APACHE_MIRROR=http://www-us.apache.org/dist/ 

使用WSGI

Monasca-api可以使用uwsgi和gunicorn与Apache一起部署。默认情况下,monasca-api在uwsgi下运行。如果您想使用Gunicorn,请确保其中devstack/local.conf包含:

  1. MONASCA_API_USE_MOD_WSGI=False 

使用

Monasca Dashboard

安装完成Monasca Dashboard Plugin后,可以通过web控制台进行查看以及管理相应的监控与告警。

在操作控制台的“Monitoring”栏,单击“Launch Monitoring Dashboard“,这将打开在管理节点上运行的专用OpenStack Horizon门户。

在该面板中,您可以:

监控信息存储在两个数据库中(Vertica/influxdb与mysql)。备份监控数据时,将同时备份两个数据库。看到

 

查看监控信息

在操作控制台中,通过从主菜单中选择Monitoring Dashboard来打开监控UI 。

单击Launch Monitoring Dashboard。

将打开管理设备上OpenStack Horizon中的“Monitoring”仪表板。

使用您在首次安装过程中为操作控制台设置的用户名和密码登录。

查看告警。您可以在屏幕上过滤结果。

单击左侧导航中的”Alarm Definitions “以查看和编辑已启用的告警的类型。

注意:请勿更改或删除任何默认告警定义。但是,您可以添加新的告警定义。

您可以更改告警的名称,表达式和其他详细信息。

如果收到过多或不足的告警,则可能需要提高或降低告警阈值。

有关编写告警表达式的信息。

可选:单击Dashboard。

OpenStack仪表板(Grafana)打开。从该仪表板中,您可以看到OpenStack服务的运行状况以及每个节点的CPU和数据库使用情况的图形表示。

可选:单击Monasca Health。

将打开“ Monasca服务仪表板”。在此仪表板上,您可以看到Monasca服务运行状况的图形表示。

总结

Monasca作为Openstack的monitoring-as-a-service组件,目前社区和网上的资料还是比较少。本文通过作者的实践,记录了Monasca相关的安装和配置以及使用的方法,

Monasca是一个可以实现IAAS到PAAS的高扩展,高性能的监控系统,其体系架构决定了它能够轻松驾驭大集群,高负载的监控。当前我们已经逐步摈弃了ceilometer+gnocchi+aodh的组合,全面转向Monasca。当前监控的不仅仅是云主机,云网络,同时也监控着我们Openstack集群内部的Kubernetns集群,数据库集群,对象存储等PAAS软件。

参考文章:

https://docs.openstack.org/monasca-api/latest/

https://wiki.openstack.org/wiki/Monasca

 

来源:新钛云服 内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯